package com.rains.graphql.system.resolvers;//package cc.mrbird.febs.system.resolvers;
//
//import cc.mrbird.febs.common.annotation.Log;
//import cc.mrbird.febs.common.controller.BaseController;
//import cc.mrbird.febs.common.domain.QueryRequest;
//import cc.mrbird.febs.common.exception.FebsException;
//import cc.mrbird.febs.common.utils.MD5Util;
//import cc.mrbird.febs.system.domain.PageData;
//import cc.mrbird.febs.system.domain.Role;
//import cc.mrbird.febs.system.domain.User;
//import cc.mrbird.febs.system.domain.UserConfig;
//import cc.mrbird.febs.system.service.RoleService;
//import cc.mrbird.febs.system.service.UserConfigService;
//import cc.mrbird.febs.system.service.UserService;
//import com.baomidou.mybatisplus.core.metadata.IPage;
//import com.baomidou.mybatisplus.core.toolkit.StringPool;
//import com.coxautodev.graphql.tools.GraphQLQueryResolver;
//import com.wuwenze.poi.ExcelKit;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang3.StringUtils;
//import org.apache.shiro.authz.annotation.RequiresPermissions;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.*;
//
//import javax.servlet.http.HttpServletResponse;
//import javax.validation.Valid;
//import javax.validation.constraints.NotBlank;
//import java.util.List;
//import java.util.Map;
//import java.util.stream.Collectors;
//
//@Slf4j
//@Component
//public class UserQuery implements GraphQLQueryResolver {
//
//    private String message;
//
//    @Autowired
//    private UserService userService;
//    @Autowired
//    private UserConfigService userConfigService;
//    @Autowired
//    private RoleService roleService;
//
//    //@GetMapping("check/{username}")
//    public boolean checkUserName(String username) {
//        return this.userService.findByName(username) == null;
//    }
//
//   // @GetMapping("/{username}")
//    public User detail(String username) {
//        User user=this.userService.findByName(username);
//        //修复用户修改自己的个人信息第二次提示roleId不能为空
//        List<Role> roles=roleService.findUserRole(username);
//        List<Long> roleIds=roles.stream().map(role ->role.getRoleId()).collect(Collectors.toList());
//        String roleIdStr=StringUtils.join(roleIds.toArray(new Long[roleIds.size()]),",");
//        user.setRoleId(roleIdStr);
//        return user;
//    }
//
//    //@GetMapping
//    @RequiresPermissions("user:view")
//    public PageData<User> userList(QueryRequest queryRequest, User user) {
//       IPage<User> users = userService.findUserDetail(user, queryRequest);
//       return new PageData<User>(users.getTotal(),users.getRecords());
//       // return getDataTable(userService.findUserDetail(user, queryRequest));
//    }
//
//    @Log("新增用户")
//   // @PostMapping
//    @RequiresPermissions("user:add")
//    public User  addUser(@Valid User user) throws FebsException {
//        try {
//            this.userService.createUser(user);
//        } catch (Exception e) {
//            message = "新增用户失败";
//            log.error(message, e);
//            throw new FebsException(message);
//        }
//
//        return user;
//    }
//
//    @Log("修改用户")
//    //@PutMapping
//    @RequiresPermissions("user:update")
//    public User updateUser(@Valid User user) throws FebsException {
//        try {
//            this.userService.updateUser(user);
//        } catch (Exception e) {
//            message = "修改用户失败";
//            log.error(message, e);
//            throw new FebsException(message);
//        }
//        return user;
//    }
//
//    @Log("删除用户")
//   // @DeleteMapping("/{userIds}")
//    @RequiresPermissions("user:delete")
//    public void deleteUsers(@NotBlank(message = "{required}")  String userIds) throws FebsException {
//        try {
//            String[] ids = userIds.split(StringPool.COMMA);
//            this.userService.deleteUsers(ids);
//        } catch (Exception e) {
//            message = "删除用户失败";
//            log.error(message, e);
//            throw new FebsException(message);
//        }
//    }
//
//   // @PutMapping("profile")
//    public User updateProfile(@Valid User user) throws FebsException {
//        try {
//            this.userService.updateProfile(user);
//        } catch (Exception e) {
//            message = "修改个人信息失败";
//            log.error(message, e);
//            throw new FebsException(message);
//
//        }
//        return user;
//    }
//
//    //@PutMapping("avatar")
//    public Boolean updateAvatar(
//            @NotBlank(message = "{required}") String username,
//            @NotBlank(message = "{required}") String avatar) throws FebsException {
//        try {
//            this.userService.updateAvatar(username, avatar);
//        } catch (Exception e) {
//            message = "修改头像失败";
//            log.error(message, e);
//            throw new FebsException(message);
//        }
//        return true;
//    }
//
//   // @PutMapping("userconfig")
//    public UserConfig updateUserConfig(@Valid UserConfig userConfig) throws FebsException {
//        try {
//            this.userConfigService.update(userConfig);
//        } catch (Exception e) {
//            message = "修改个性化配置失败";
//            log.error(message, e);
//            throw new FebsException(message);
//        }
//
//        return userConfig;
//    }
//
//    //@GetMapping("password/check")
//    public boolean checkPassword(
//            @NotBlank(message = "{required}") String username,
//            @NotBlank(message = "{required}") String password) {
//        String encryptPassword = MD5Util.encrypt(username, password);
//        User user = userService.findByName(username);
//        if (user != null)
//            return StringUtils.equals(user.getPassword(), encryptPassword);
//        else
//            return false;
//    }
//
//   // @PutMapping("password")
//    public boolean updatePassword(
//            @NotBlank(message = "{required}") String username,
//            @NotBlank(message = "{required}") String password) throws FebsException {
//        try {
//            userService.updatePassword(username, password);
//        } catch (Exception e) {
//            message = "修改密码失败";
//            log.error(message, e);
//            throw new FebsException(message);
//        }
//        return true;
//    }
//
//   // @PutMapping("password/reset")
//    @RequiresPermissions("user:reset")
//    public boolean resetPassword(@NotBlank(message = "{required}") String usernames) throws FebsException {
//        try {
//            String[] usernameArr = usernames.split(StringPool.COMMA);
//            this.userService.resetPassword(usernameArr);
//        } catch (Exception e) {
//            message = "重置用户密码失败";
//            log.error(message, e);
//            throw new FebsException(message);
//        }
//
//        return true;
//    }
//
////    @PostMapping("excel")
////    @RequiresPermissions("user:export")
////    public void export(QueryRequest queryRequest, User user, HttpServletResponse response) throws FebsException {
////        try {
////            List<User> users = this.userService.findUserDetail(user, queryRequest).getRecords();
////            ExcelKit.$Export(User.class, response).downXlsx(users, false);
////        } catch (Exception e) {
////            message = "导出Excel失败";
////            log.error(message, e);
////            throw new FebsException(message);
////        }
////    }
//}
